package com.hyz.yuaiagent.config;

import com.hyz.yuaiagent.rag.document.LoveAppDocumentLoader;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.embedding.EmbeddingModel;
import org.springframework.ai.vectorstore.SimpleVectorStore;
import org.springframework.ai.vectorstore.VectorStore;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 02-这是一个基于内存的rag知识库
 * 配置类，用于创建和配置向量存储（Vector Store）
 * SimpleVectorStore 是 Spring AI 提供的一个轻量级、内存型的向量数据库实现。
 */
@Configuration
@Slf4j
public class LoveAppVectorStoreConfig {
    /**
     * 注入文档加载器，用于加载文档并将其转换为向量存储
     */
    @Resource
    private LoveAppDocumentLoader loveAppDocumentLoader;

    /**
     * 创建一个向量存储的Bean
     *
     * @param dashscopeEmbeddingModel 嵌入模型，用于将文档内容转换为向量
     * @return 返回一个配置好的向量存储实例
     */
    @Bean
    public VectorStore loveAppVectorStore(EmbeddingModel dashscopeEmbeddingModel) {
        // 创建一个简单的向量存储实例
        SimpleVectorStore simpleVectorStore = SimpleVectorStore.builder(dashscopeEmbeddingModel).build();
        // 将文档加载器加载的文档添加到向量存储中
        simpleVectorStore.add(loveAppDocumentLoader.loaderDocument());
        return simpleVectorStore;
    }
}
